package com.woniu.sharepark.leasesystem.common.util;

import com.woniu.sharepark.common.JsonResult;
import com.woniu.sharepark.constant.SystemConstant;
import com.woniu.sharepark.leasesystem.common.dto.IDCardDTO;
import com.woniu.sharepark.leasesystem.common.dto.UserInfoDTO;
import com.woniu.sharepark.util.BaiduVerifyUtil;

/**
 * @ClassName: IDCardUtil
 * @Description: 此为身份证识别认证工具类，封装了身份证识别认证方法
 * @Author: Zongjie.Li
 * @Date: 2019/6/6
 * @Version: 1.0
 **/
public class IDCardUtil {

    public static  JsonResult idCardVerify(IDCardDTO idCardDTO){
        JsonResult jsonResult = idCardNotNullVerify(idCardDTO);
        if (jsonResult.getCode().equals(SystemConstant.ERROR_CODE)){
            return jsonResult;
        }
        UserInfoDTO userInfoDTO = BaiduVerifyUtil.idcardRecognition(idCardDTO, new UserInfoDTO());
        jsonResult = userInfoVerify(idCardDTO,userInfoDTO);
        if (jsonResult.getCode().equals(SystemConstant.SUCCESS_CODE)){
            jsonResult.setResult(userInfoDTO);
        }
        return jsonResult;
    }

    private static JsonResult idCardNotNullVerify(IDCardDTO idCardDTO){
        if (idCardDTO.getName() == null || idCardDTO.getName().equals("")){
            return JsonResult.error("请输入您的名字");
        }
        if (idCardDTO.getCard() == null || idCardDTO.getCard().equals("")){
            return JsonResult.error("请输入您的身份证号");
        }
        if (idCardDTO.getFrontImage().getOriginalFilename() == null || idCardDTO.getFrontImage().getOriginalFilename().equals("")){
            return JsonResult.error("请上传您的身份证正面照");
        }
        if (idCardDTO.getBackImage().getOriginalFilename() == null || idCardDTO.getBackImage().getOriginalFilename().equals("")){
            return JsonResult.error("请上传您的身份证反面照");
        }
        return JsonResult.ok();
    }


    private static JsonResult userInfoVerify(IDCardDTO idCardDTO,UserInfoDTO userInfoDTO){
        if (userInfoDTO == null || userInfoDTO.getName() == null || userInfoDTO.getName().equals("") ||
                userInfoDTO.getSex() == null || userInfoDTO.getSex().equals("") ||
                userInfoDTO.getCard() == null || userInfoDTO.getCard().equals("") ||
                userInfoDTO.getInvalidateTime() == null) {
            return JsonResult.error("无法识别图片信息，请重新上传");
        }
        if (userInfoDTO.getInvalidateTime().getTime() < System.currentTimeMillis()) {
            return JsonResult.error("身份信息已过期，请使用在有效期内的身份证");
        }
        if (!userInfoDTO.getName().equals(idCardDTO.getName()) || !userInfoDTO.getCard().equals(idCardDTO.getCard())) {
            return JsonResult.error("身份证信息不匹配");
        }
        return JsonResult.ok();
    }
}
